package com.own.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestClient;

import java.util.concurrent.Executors;

/**
 * @Author zyf
 * @Date 2025-06-03 15:43
 * Description:
 * @Version 1.0
 */
//@SpringBootTest
public class VirtualThreadDemo {

//    虚拟线程是Java19提出来的一个概念，Java19提供特性预览，开放实装是Java21（2023年9月）
//    虚拟线程主要解决的问题是减少I/O密集型任务的I/O阻塞
//    而虚拟线程则是在线程遇到I/O阻塞时，会放暂时放弃等待去做其他事，等I/O完成它才会回来继续执行任务


    @Test
    public void test() {
        Thread.ofVirtual().start(() -> {
            System.err.println(Thread.currentThread().getName() + "Virtual Thread");
        });


//        就是之前的普通线程
        Thread.ofPlatform().start(() -> {
            System.err.println(Thread.currentThread().getName() + "Platform Thread");
        });

        RestClient build = RestClient.builder().build();
        build.get().uri("https://www.baidu.com").retrieve().body(String.class);
    }

    @Test
    public void test2() {
        var a = 10;
        Executors.newVirtualThreadPerTaskExecutor().execute(() -> {
            System.err.println(Thread.currentThread().getState());
            System.err.println(Thread.currentThread().getName() + "Virtual Thread***********");
        });
    }
}
